#ifndef ENTITYENGINE_H
#define ENTITYENGINE_H

#include <string>
#include <vector>

#include <GL/glut.h>
//Depends on modelManager
//Add dependencies to shader & texture manager
//Consider no shader manager and instead have each entity entitled to a shader. This way shader variables can be modified freely... naa
class entity{
private:
	bool billboard;
	std::string modelID;
	float xPos, yPos, zPos;
	float xRot, yRot, zRot;
	float xSca, ySca, zSca;

	std::string globalMaterial; //if this is not set model face will determine the material

public:
	entity(std::string modelID); //consider adding texture and shader to this
	entity(std::string modelID, std::vector<entity>* list); //This can add itself to a list.
	entity(float xSca, float ySca); //Billboarded, add size options later.

	void display();
	//entity(verts can work on billboarded later
	void translate(float x, float y, float z);
	void rotate(float x, float y, float z);

	void setPosition(float x, float y, float z);
	void setRotation(float x, float y, float z);

	void setGlobalMaterial(std::string materialName);
	void disableGlobalMaterial();
	
};

void displayEntities();

void billboardCheatSphericalBegin();
void billboardEnd();


#endif